home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / share / pyshared / PIL / McIdasImagePlugin.py < prev    next >
Text File  |  2006-12-03  |  2KB  |  75 lines

  1. #
  2. # The Python Imaging Library.
  3. # $Id: McIdasImagePlugin.py 2134 2004-10-06 08:55:20Z fredrik $
  4. #
  5. # Basic McIdas support for PIL
  6. #
  7. # History:
  8. #       97-05-05 fl     Created (8-bit images only)
  9. #
  10. # Thanks to Richard Jones <richard.jones@bom.gov.au> for specs
  11. # and samples.
  12. #
  13. # Copyright (c) Secret Labs AB 1997.
  14. # Copyright (c) Fredrik Lundh 1997.
  15. #
  16. # See the README file for information on usage and redistribution.
  17. #
  18.  
  19. __version__ = "0.1"
  20.  
  21. import string
  22.  
  23. import Image, ImageFile
  24.  
  25. def i16(c,i=0):
  26.     return ord(c[1+i])+(ord(c[i])<<8)
  27.  
  28. def i32(c,i=0):
  29.     return ord(c[3+i])+(ord(c[2+i])<<8)+(ord(c[1+i])<<16)+(ord(c[i])<<24)
  30.  
  31. def _accept(s):
  32.     return i32(s) == 0 and i32(s, 4) == 4
  33.  
  34. ##
  35. # Image plugin for McIdas area images.
  36.  
  37. class McIdasImageFile(ImageFile.ImageFile):
  38.  
  39.     format = "MCIDAS"
  40.     format_description = "McIdas area file"
  41.  
  42.     def _open(self):
  43.  
  44.         # parse area file directory
  45.         s = self.fp.read(256)
  46.         if not _accept(s):
  47.             raise SyntaxError, "not an McIdas area file"
  48.  
  49.         # get mode
  50.         if i32(s, 40) != 1 or i32(s, 52) != 1:
  51.             raise SyntaxError, "unsupported McIdas format"
  52.  
  53.         self.mode = "L"
  54.  
  55.         # get size
  56.         self.size = i32(s, 36), i32(s, 32)
  57.  
  58.         # setup image descriptor
  59.         prefix = i32(s, 56)
  60.         offset = i32(s, 132)
  61.  
  62.         self.tile = [("raw", (0, 0) + self.size, offset,
  63.                      ("L", prefix + self.size[0], 1))]
  64.  
  65.         # FIXME: should store the navigation and calibration blocks
  66.         # somewhere (or perhaps extract some basic information from
  67.         # them...)
  68.  
  69. # --------------------------------------------------------------------
  70. # registry
  71.  
  72. Image.register_open("MCIDAS", McIdasImageFile, _accept)
  73.  
  74. # no default extension
  75.